<?php
namespace api\modules\v1\controllers;

use api\modules\v1\models\group\Group;
use api\modules\v1\models\group\GroupApply;
use api\modules\v1\models\group\GroupUser;
use common\models\Functions;
use common\models\Status;
use yii\filters\auth\HttpHeaderAuth;
use yii\helpers\ArrayHelper;
use Yii;

/**
 * Default controller for the `v1` module
 */
class GroupController extends DefaultController
{

    public $modelClass = 'api\modules\v1\models\imGroup\ImGroup';

    public function behaviors()
    {
        return ArrayHelper::merge(parent::behaviors(), [
            'authenticator' => [
                'class' => HttpHeaderAuth::className(),    //head头部验证
                'header' => 'access-token',
                'optional' => [                     //需要过滤掉不用token参数的方法

                ]
            ]
        ]);
    }

    /* ======================  群申请 ========================= */
    /**
     * 申请群
     * @return array
     */
    public function actionApply() {
        if (Yii::$app->request->isPost) {
            return (new GroupApply())->apply();
        }
    }


    /**
     * 申请列表
     * @return array
     */
    public function actionApplyList()
    {
        if (Yii::$app->request->isGet) {
            return (new GroupApply())->getList();
        }
    }

    /**
     * 申请处理
     * @return array
     */
    public function actionApplyCheck()
    {
        if (Yii::$app->request->isPost) {
            $type = Yii::$app->request->post('type',0);
            if ($type == Status::GROUP_APPLY_CHECK_TYPE_MANAGE) {
                return (new GroupApply())->check();
            } else if ($type == Status::GROUP_APPLY_CHECK_TYPE_USER) {
                return (new GroupApply())->beInviteUserCheck();
            } else {
                return Functions::formatRestAPI(1,'非法操作');
            }
        }

    }

    /* ======================  群管理 ========================= */
    /**
     * 创建群
     * @return array
     */
    public function actionCreate()
    {
        if (Yii::$app->request->isPost) {
            return (new Group())->create();
        }
    }

    /**
     * 群列表
     * @return array
     */
    public function actionList()
    {
        // 通过sdk查询  需要查询在不在群里，无法通过SDK查询
        if (Yii::$app->request->isGet) {
            return (new Group())->getList();
        }
    }

    /**
     *  群详情 与 修改  删除群
     * @param string $group_tx_code
     * @return array
     */
    public function actionInfo($group_tx_code = '')
    {
        // 通过sdk查询
        if (Yii::$app->request->isGet) {
            return (new Group())->info($group_tx_code);
        }

        if (Yii::$app->request->isPost) {
            return (new Group())->updateInfo();
        }

        if (Yii::$app->request->isDelete) {
            return (new Group())->del($group_tx_code);
        }

    }

    /**
     *  群成员人数
     * @param string $group_tx_code
     * @return array
     */
    public function actionGroupUserNum($group_tx_code = '')
    {
        // 通过sdk查询
        if (Yii::$app->request->isGet) {
            return (new Group())->getGroupUserNum($group_tx_code);
        }

    }

    /**
     * 转让群
     * @return array
     */
    public function actionTrans()
    {
        if (Yii::$app->request->isPost) {
            return (new Group())->transGroup();
        }
    }

    /**
     * 群禁言
     * @return array
     */
    public function actionShutUp()
    {
        if (Yii::$app->request->isPost) {
            return (new Group())->shutUp();
        }

    }

    /**
     * 设置群管理
     * @return array
     */
    public function actionSetManage()
    {
        if (Yii::$app->request->isPost) {
            return (new Group())->setManage();
        }

    }

    /* ======================  群成员 ========================= */
    /**
     * 群成员列表
     * @return array
     */
    public function actionUserList()
    {
        // 通过sdk查询
//        if (Yii::$app->request->isGet) {
//            return (new GroupUser())->getList();
//        }
    }

    /**
     * 查看邀请信息
     * @return array
     */
    public function actionUserInfo()
    {
//        // 通过sdk查询
//        if (Yii::$app->request->isGet) {
//            return (new GroupUser())->getInfo();
//        }
    }

    /**
     * 修改名片
     * @return array
     */
    public function actionUpdateBusinessCard()
    {
        if (Yii::$app->request->isPost) {
            return (new GroupUser())->updateBusinessCard();
        }
    }

    /**
     * 更改红包状态
     * @return array
     */
    public function actionUpdateRedPacketState()
    {
        if (Yii::$app->request->isPost) {
            return (new GroupUser())->updateRedPacketState();
        }
    }

    /**
     * 禁言
     * @return array
     */
    public function actionUserShutUp()
    {
        if (Yii::$app->request->isPost) {
            return (new GroupUser())->shutUp();
        }
    }

    /**
     * 主动退群  或者 T人
     * @param string $group_tx_code
     * @return array
     */
    public function actionUserQuitGroup($group_tx_code = '')
    {
        if (Yii::$app->request->isDelete) {
            return (new GroupUser())->quitGroup($group_tx_code);
        }

        if (Yii::$app->request->isPost) {
            return (new GroupUser())->kickOutGroup();
        }
    }

    /**
     * 邀请用户入群
     * @return array
     */
    public function actionInviteFriend()
    {
        if (Yii::$app->request->isPost) {
            return (new GroupUser())->inviteFriend();
        }
    }

}
